package com.ocom.xcxapi.controller;

import com.ocom.common.constant.WxServiceUrl;
import com.ocom.common.enums.ResultEnum;
import com.ocom.common.resp.Result;
import com.ocom.common.utils.ResultUtil;
import com.ocom.xcxapi.service.FangKeService;
import com.ocom.xcxapi.vo.fangke.GetFiledListVo;
import com.ocom.xcxapi.vo.fangke.UpdateVisitorRecordVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

import java.util.Map;


@Slf4j
@RestController
public class FangKeController {

    @Autowired
    private FangKeService fangKeService;

    /**
     * 2.11.访客申请列表（fangke/getFiledList）
     * */
    @PostMapping(WxServiceUrl.URL_FangkeGetFiledList)
    public Result FangkeGetFiledList(@Validated @RequestBody GetFiledListVo getFiledListVo){
        log.info("访客申请列表请求参数:{{}}",getFiledListVo);
        return fangKeService.FangkeGetFiledList(getFiledListVo);
    }

    /**
     * 2.12.添加访客申请（fangke/addFiled）
     * */
    @PostMapping(WxServiceUrl.URL_FangkeAddFiled)
    public Result FangkeAddFiled(@Validated @RequestBody Map<String,Object> map){
        log.info("添加访客申请请求参数:{{}}",map);
        return fangKeService.FangkeAddFiled(map);
    }

    /**
     * 2.13.补充访客人员（fangke/addGuest）
     * */
    @PostMapping(WxServiceUrl.URL_FangkeAddGuest)
    public Result FangkeAddGuest(@Validated @RequestBody Map<String,Object> map){
        log.info("补充访客人员请求参数:{{}}",map);
        return fangKeService.FangkeAddGuest(map);
    }

    /**
     * 2.14.删除访客申请（fangke/delFiled）
     * */
    @PostMapping(WxServiceUrl.URL_FangkeDelFiled)
    public Result FangkeDelFiled(@Validated @RequestBody Map<String,Object> map){
        log.info("删除访客申请请求参数:{{}}",map);
        return fangKeService.FangkeDelFiled(map);
    }

    /**
     * 2.16.审批访客申请（fanke/vetting）
     * */
    @PostMapping(WxServiceUrl.URL_FangkeVetting)
    public Result FangkeVetting(@Validated @RequestBody UpdateVisitorRecordVo updateVisitorRecordVo){
        log.info("审批访客申请请求参数:{{}}",updateVisitorRecordVo);
        return fangKeService.FangkeVetting(updateVisitorRecordVo);
    }

    /**
     * 2.15.待审批列表（fangke/getApprovalList）
     * */
    @PostMapping(WxServiceUrl.URL_FangkeGetApprovalList)
    public Result FangkeGetApprovalList(@Validated @RequestBody Map<String,Object> map){
        log.info("待审批列表请求参数:{{}}",map);
        return fangKeService.FangkeGetApprovalList(map);
    }

    /**
     * 2.17.访客详情(fangke/detail)
     * */
    @GetMapping(WxServiceUrl.URL_FangkeDetail)
    public Result Fangkedetail(Long comId,Long recodeId){
        if (comId==null){
            log.info("访客详情 comId 为空");
            return ResultUtil.error(ResultEnum.Err_203,"访客详情 comId 为空");
        }
        if (recodeId==null){
            log.info("访客详情 recodeId 为空");
            return ResultUtil.error(ResultEnum.Err_203,"访客详情 recodeId 为空");
        }
        return fangKeService.Fangkedetail(comId,recodeId);
    }

    /**
     * 2.18.审批负责人列表（fangke/approval）
     * */
    @GetMapping(WxServiceUrl.URL_FangkeApproval)
    public Result FangkeApproval(Long comId){
        if (comId==null){
            log.info("访客详情 comId 为空");
            return ResultUtil.error(ResultEnum.Err_203,"访客详情 comId 为空");
        }
        return fangKeService.FangkeApproval(comId);
    }

    /**
     * 2.19.获取审批区域列表(fangke/areas)
     * */
    @GetMapping(WxServiceUrl.URL_FangkeAreas)
    public Result FangkeAreas(Long comId,Long pId){
        if (comId==null){
            log.info("获取审批区域列表 comId 为空");
            return ResultUtil.error(ResultEnum.Err_203,"获取审批区域列表 comId 为空");
        }
        if (pId==null){
            log.info("获取审批区域列表 pId 为空");
            return ResultUtil.error(ResultEnum.Err_203,"获取审批区域列表 pId 为空");
        }
        return fangKeService.FangkeAreas(comId,pId);
    }
}
